<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <!-- 自定义一个事件  callback 寄存到某处 某个条件 触发 -->
    <script>
        // 创建了EventEmitter 类，
        class EventEmitter {
            constructor() {
                // 所有的事件
                this.events = new Map() // es6新的数据结构  HashMap {} O(1)
            }
            // 订阅
            addListener(type, fn) {
                if (!this.events.get(type)) {
                    this.events.set(type, fn)
                }
            }
            // 触发事件 emit
            // type 必传的第一个参数
            emit(type) {
                let handle = this.events.get(type); // 处理函数
                handle.apply(this, [...arguments].slice(1)) // call bind             
            }         
        }
        let emitter = new EventEmitter() // 自定义事件
        emitter.addListener('interview', (salary, position) => {
            console.log(`这里有一个月薪${salary}的${position}岗位，欢迎面基`);
        }) // 自定义事件类型
        setTimeout(() => {
            emitter.emit('interview', 20000, '工程师')
        }, 1000)
    </script>
</body>
</html>